package com.nageoffer.shortlink.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nageoffer.shortlink.project.dto.req.ShortLinkGroupStatsAccessRecordReqDTO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkGroupStatsReqDTO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkStatsAccessRecordReqDTO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkStatsReqDTO;
import com.nageoffer.shortlink.project.dto.resp.ShortLinkGroupStatsAccessRecodeRespDTO;
import com.nageoffer.shortlink.project.dto.resp.ShortLinkStatsAccessRecodeRespDTO;
import com.nageoffer.shortlink.project.dto.resp.ShortLinkStatsGroupRespDTO;
import com.nageoffer.shortlink.project.dto.resp.ShortLinkStatsRespDTO;

public interface ShortLinkStatsService {
    /**
     * 访问单个链接在指定时间内监控数据
     * @param requestParam 访问单个短链接请求参数
     * @return 访问单个短链接响应参数
     */
    ShortLinkStatsRespDTO oneShortLinkStats(ShortLinkStatsReqDTO requestParam);

    /**
     * 访问单个链接在指定时间内访问记录监控数据
     * @param requestParam 访问短链接监控访问记录请求参数
     * @return 访问单短链接监控访问记录响应参数
     */
    IPage<ShortLinkStatsAccessRecodeRespDTO> shortLinkStatsAccessRecord(ShortLinkStatsAccessRecordReqDTO requestParam);

    /**
     * 访问分组链接在指定时间内监控数据
     * @param requestParam 访问短链接监控访问记录请求参数
     * @return 访问分组短链接监控访问记录响应参数
     */
    ShortLinkStatsGroupRespDTO groupShortLinkStats(ShortLinkGroupStatsReqDTO requestParam);

    /**
     * 访问分组链接在指定时间内访问记录监控数据
     * @param requestParam 访问分组短链接监控访问记录请求参数
     * @return 访问分组短链接监控访问记录响应参数
     */
    IPage<ShortLinkGroupStatsAccessRecodeRespDTO> groupShortLinkStatsAccessRecord(ShortLinkGroupStatsAccessRecordReqDTO requestParam);
}
